/*
 * Copyright (c) 2018-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

namespace TencentCloud.Ocr.V20181119.Models
{
    using Newtonsoft.Json;
    using System.Collections.Generic;
    using TencentCloud.Common;

    public class RecognizeMacaoIDCardOCRResponse : AbstractModel
    {
        
        /// <summary>
        /// Chinese last name
        /// </summary>
        [JsonProperty("CnLastName")]
        public string CnLastName{ get; set; }

        /// <summary>
        /// English last name
        /// </summary>
        [JsonProperty("EnLastName")]
        public string EnLastName{ get; set; }

        /// <summary>
        /// Last name code
        /// </summary>
        [JsonProperty("LastNameCode")]
        public string LastNameCode{ get; set; }

        /// <summary>
        /// Chinese first name
        /// </summary>
        [JsonProperty("CnFirstName")]
        public string CnFirstName{ get; set; }

        /// <summary>
        /// English first name
        /// </summary>
        [JsonProperty("EnFirstName")]
        public string EnFirstName{ get; set; }

        /// <summary>
        /// First name code
        /// </summary>
        [JsonProperty("FirstNameCode")]
        public string FirstNameCode{ get; set; }

        /// <summary>
        /// ID Number
        /// </summary>
        [JsonProperty("ID")]
        public string ID{ get; set; }

        /// <summary>
        /// Birthday(DD-MM-YYYY)
        /// </summary>
        [JsonProperty("Birthday")]
        public string Birthday{ get; set; }

        /// <summary>
        /// gender
        /// </summary>
        [JsonProperty("Sex")]
        public string Sex{ get; set; }

        /// <summary>
        /// First issue Date (DD-MM-YYYY)
        /// </summary>
        [JsonProperty("FirstIssueDate")]
        public string FirstIssueDate{ get; set; }

        /// <summary>
        /// Issue date (DD-MM-YYYY)
        /// </summary>
        [JsonProperty("CurrentIssueDate")]
        public string CurrentIssueDate{ get; set; }

        /// <summary>
        /// Validity period (DD-MM-YYYY)
        /// </summary>
        [JsonProperty("ValidityPeriod")]
        public string ValidityPeriod{ get; set; }

        /// <summary>
        /// ID symbol
        /// </summary>
        [JsonProperty("Symbol")]
        public string Symbol{ get; set; }

        /// <summary>
        /// Height (unit: meters)
        /// </summary>
        [JsonProperty("Height")]
        public string Height{ get; set; }

        /// <summary>
        /// Processed image (Base64)
        /// </summary>
        [JsonProperty("RetImage")]
        public string RetImage{ get; set; }

        /// <summary>
        /// Image rotation angle, the horizontal direction of the text is 0, clockwise is positive, counterclockwise is negative
        /// </summary>
        [JsonProperty("Angle")]
        public string Angle{ get; set; }

        /// <summary>
        /// Resident type.
        /// </summary>
        [JsonProperty("ResidentType")]
        public string ResidentType{ get; set; }

        /// <summary>
        /// Card Warning Information
        /// 
        /// -9101 Alarm for covered certificate,
        /// -9102 Alarm for photocopied certificate,
        /// -9103 Alarm for photographed certificate,
        /// -9104 Alarm for PS certificate,
        /// -9107 Alarm for reflective certificate,
        /// -9108 Alarm for blurry image,
        /// -9109 This capability is not enabled.
        /// </summary>
        [JsonProperty("WarnCardInfos")]
        public long?[] WarnCardInfos{ get; set; }

        /// <summary>
        /// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
        /// </summary>
        [JsonProperty("RequestId")]
        public string RequestId{ get; set; }


        /// <summary>
        /// For internal usage only. DO NOT USE IT.
        /// </summary>
        public override void ToMap(Dictionary<string, string> map, string prefix)
        {
            this.SetParamSimple(map, prefix + "CnLastName", this.CnLastName);
            this.SetParamSimple(map, prefix + "EnLastName", this.EnLastName);
            this.SetParamSimple(map, prefix + "LastNameCode", this.LastNameCode);
            this.SetParamSimple(map, prefix + "CnFirstName", this.CnFirstName);
            this.SetParamSimple(map, prefix + "EnFirstName", this.EnFirstName);
            this.SetParamSimple(map, prefix + "FirstNameCode", this.FirstNameCode);
            this.SetParamSimple(map, prefix + "ID", this.ID);
            this.SetParamSimple(map, prefix + "Birthday", this.Birthday);
            this.SetParamSimple(map, prefix + "Sex", this.Sex);
            this.SetParamSimple(map, prefix + "FirstIssueDate", this.FirstIssueDate);
            this.SetParamSimple(map, prefix + "CurrentIssueDate", this.CurrentIssueDate);
            this.SetParamSimple(map, prefix + "ValidityPeriod", this.ValidityPeriod);
            this.SetParamSimple(map, prefix + "Symbol", this.Symbol);
            this.SetParamSimple(map, prefix + "Height", this.Height);
            this.SetParamSimple(map, prefix + "RetImage", this.RetImage);
            this.SetParamSimple(map, prefix + "Angle", this.Angle);
            this.SetParamSimple(map, prefix + "ResidentType", this.ResidentType);
            this.SetParamArraySimple(map, prefix + "WarnCardInfos.", this.WarnCardInfos);
            this.SetParamSimple(map, prefix + "RequestId", this.RequestId);
        }
    }
}

